
using System;
using Core.Base;
using Core.Contracts.Enums;
using Core.Contracts.Interfaces;
using Core.Features;
using Core.Resources;
using Core.Extensions;

namespace Core.Items.Robots
{
    
    public sealed class Arkhe : RobotBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="T:Core.Items.Robots.Arkhe"/> class.
        /// </summary>
        public Arkhe(): base(
            "Arkhe",
            Traduction.desc_arkhe,
            FactionsEnum.Syndicate,
            RobotTechnologyLevel.Mk1,
            RobotSizesEnum.Rookie,
            new ISlot[]
                {
                    new Slot(0,SlotGroupsEnum.Chassis,SlotTypesEnum.Turret|SlotTypesEnum.Misc|SlotTypesEnum.Industrial, SizesEnum.Small),
                    new Slot(1,SlotGroupsEnum.Chassis,SlotTypesEnum.Turret|SlotTypesEnum.Misc|SlotTypesEnum.Industrial|SlotTypesEnum.Missile, SizesEnum.Small),
                    new Slot(SlotGroupsEnum.Head, SlotTypesEnum.Modules),
                    new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules),
                    new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules),
                    
                },
            new IFeature<object>[]
                {
                        new AccumulatorCapacity<double>(225),
                        new AccumulatorRechargeTime<double>(125),
                        new CpuPerformance<double>(30),
                        new ReactorPerformance<double>(125),
                        new ArmorAmount<double>(625),
                        new ChemicalResistance<double>(30),
                        new KineticResistance<double>(45),
                        new SeismicResistance<double>(45),
                        new ThermalResistance<double>(45),
                        new ChemicalEHP<double>(0),
                        new KineticEHP<double>(0),
                        new SeismicEHP<double>(0),
                        new ThermalEHP<double>(0),
                        new SurfaceHitSize<double>(3),
                        new InterferenceMinimum<double>(20),
                        new InterferencePeak<double>(50),
                        new LockingRange<double>(120),
                        new LockingTime<double>(12.50),
                        new MaximumTargets<double>(2),
                        new MissileGuidanceFailure<double>(0.1),
                        new SensorStrength<double>(85),
                        new SignalDetection<double>(80),
                        new SignalMasking<double>(80),
                        new ReloadingTime<double>(10),
                        new CargoCapacity<double>(3.75),
                        new RobotMass<double>(3950),
                        new SlopeCapacity<double>(56),
                        new TopSpeed<double>(73.80),
                        new Volume<double>(12),
                        new DemobilizerResistance<double>(0),
                        new CriticalHitChance<double>(0)
                },
            new IBonusModifier[]
                {
                    new BonusModifier<BasicRobotics>(FeatureTypesEnum.Module,FeaturesEnum.SmallFirearmHitDispersion, -0.02){ Unit =UnitsEnum.Percentage, DisplayName = "Small firearms hit dispersion"}, 
                    new BonusModifier<BasicRobotics>(FeatureTypesEnum.Module,FeaturesEnum.SmallMagneticWeaponHitDispersion, -0.02){ Unit =UnitsEnum.Percentage, DisplayName = "Small magnetic weapons hit dispersion"}, 
                    new BonusModifier<BasicRobotics>(FeatureTypesEnum.Module,FeaturesEnum.SmallLaserHitDispersion,-0.02){ Unit =UnitsEnum.Percentage, DisplayName = "Small lasers hit dispersion"}, 
                    new BonusModifier<BasicRobotics>(FeatureTypesEnum.Module,FeaturesEnum.SmallMissileLauncherHitDispersion,-0.02){ Unit =UnitsEnum.Percentage, DisplayName = "Small missile launcher hit dispersion"}, 
                    new BonusModifier<BasicRobotics>(FeatureTypesEnum.Module,FeaturesEnum.SmallFirearmDamage, 0.02){ Unit =UnitsEnum.Percentage, DisplayName = "Small firearms damage"}, 
                    new BonusModifier<BasicRobotics>(FeatureTypesEnum.Module, FeaturesEnum.ArmorRepairAmount, 0.02){ Unit =UnitsEnum.Percentage, DisplayName = "Armor repair amount"}, 
                },
            null )
        {
        }
    }
}